home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / PET / S-Super PET / (s)tl.d64 / HELLO.ASM < prev    next >
Assembly Source File  |  2009-01-18  |  5KB  |  147 lines

  1. ;       Hello.asm      by  T.M. Peterson    Mod of Feb 3 1984
  2.  
  3. ;   Preliminary routine for Sys_Patch & GScroll
  4.  
  5.         xref    printf_,setdate_,settime_,tputcurs_,getrec_,stoi_
  6.  
  7. loadcmd equ     $AC20   ;ROM routine to load program
  8.  
  9. hello   equ     *
  10.         ldd     #hello_msg
  11.         jsr     printf_
  12.         bsr     rd_wt_tst       ;Test switch setting.
  13.         ldd     #$1201
  14.         jsr     TPutCurs_
  15.         ldd     #get_date_msg
  16.         bsr     input_rec
  17.         if      ne
  18.           ldx   #beg_buf
  19.           clr   b,x             ;Dump <CR>
  20.           tfr   x,d
  21.           jsr   setdate_
  22.         endif
  23.         ldd     #get_time_msg
  24.         bsr     input_rec
  25.         if      ne
  26.           ldx   #beg_buf
  27.           ldy   #time_buf
  28.           loop
  29.                 pshs    y
  30.                 bsr     get_time_byte
  31.                 puls    y
  32.                 quif    eq      ;no more string
  33.                 stb     ,y+
  34.                 cmpx    #end_buf
  35.           until ge
  36.           ldd   #time_buf
  37.           jsr   settime_
  38.         endif
  39.         ldd     #gscroll_name
  40.         jsr     loadcmd         ;chain to gscroll before quitting
  41.         if      ne              ;successful load
  42.           clra
  43.           bsr   mem_set         ;write protect banks
  44.           jmp   [$2A]
  45.         endif
  46.         clr     $32             ;else just quit
  47.         rts
  48.  
  49. input_rec       equ     *
  50.         jsr     printf_         ;Print prompt
  51.         ldd     #end_buf-beg_buf
  52.         pshs    d
  53.         ldd     #beg_buf
  54.         jsr     GetRec_         ;Accept response
  55.         leas    2,s
  56.         tstb            ;Get any chars?
  57.         rts
  58.  
  59. get_time_byte   equ     *
  60.         pshs    x       ;save starting place
  61.         loop
  62.           ldb   ,x+
  63.           quif  eq      ;end of string
  64.           subb  #':
  65.         until   eq
  66.         clr     ,-x     ;make ':' into string term.
  67.         cmpx    ,s      ;any chars?
  68.         if      ne      ;yes
  69.           inx
  70.           ldd   ,s      ;point to start
  71.           stx   ,s      ;save cur. pos.
  72.           jsr   StoI_   ;make #
  73.           ldx   ,s
  74.         endif
  75.         leas    2,s
  76.         rts
  77.  
  78. rd_wt_tst       equ     *
  79.         bsr     wrt_set         ;Try to enable write.
  80.         beq     warn            ;Can't wrt, warn of read_only setting
  81.         clra                    ;OK, we can write, but can we set prot.?
  82.         bsr     mem_set         ;Try READ only setting.
  83.         bne     warn            ;Oops, can't protect.
  84.         ldd     #success        ;OK, tell good news.
  85.         jsr     printf_
  86.                                 ;Fall through to enable write.
  87.  
  88. wrt_set lda     #2              ;Enable write to banked RAM
  89.  
  90. mem_set equ     *               ;Set system latch bits according to [A]
  91.         ldb     #$80            ;access system latch
  92.         orb     $220            ;add current bank number
  93.         stb     $effc
  94.         sta     $eff8           ;Set the bits
  95.         andb    #$f
  96.         stb     $effc           ;restore bank latch
  97.         lda     $9000           ;Now, can we write?
  98.         dec     $9000
  99.         cmpa    $9000           ;Did it take?
  100.         pshs    cc
  101.         sta     $9000           ;Restore, in case it DID.
  102.         puls    cc
  103.         rts
  104.  
  105. warn    equ     *
  106.         ldd     #warning
  107.         bsr     input_rec
  108.         leas    2,s
  109.         lbra    hello
  110.  
  111. warning fcb     $d,$d
  112.         fcc     "Please set your banked RAM memory switch to 'PROG.'"
  113.         fcb     $D,$D
  114.         fcc     "      (Press RETURN when ready to proceed.)"
  115.         fcb     $D,$D,0
  116.  
  117. success fcb     $d,$d
  118.         fcc     "You may now LEAVE your Memory Switch in 'PROG.' whenever"
  119.         fcb     $d,$d
  120.         fcc     "'gscroll' has been run from the main menu. (As I will do"
  121.         fcb     $d,$d
  122.         fcc     "for you after you've answered the following two questions.)"
  123.         fcb     0
  124.  
  125. hello_msg       fcb     12,10,10,10
  126.                 fcc     "         Hello! I hope you like this modification"
  127.                 fcb     $D,$D
  128.                 fcc     "           of the SuperPET's operating system."
  129.                 fcb     $d,$d,$d
  130.                 fcc     "           Terry M. Peterson  February 3, 1984"
  131.                 fcb     $d,0
  132.  
  133. get_date_msg    fcc     "Please enter the date (string or CR)."
  134.                 fcb     $D,0
  135.  
  136. get_time_msg    fcc     "Please enter the time (HH:MM:SS or CR)."
  137.                 fcb     $D,0
  138.  
  139. gscroll_name    fcc     "disk/1.gscroll"
  140.                 fcb     0
  141.  
  142. time_buf        fcb 0,0,0,0
  143.  
  144. beg_buf equ     *
  145. end_buf equ     *+80
  146.         end
  147.